<?php

namespace App\Api\Controllers;

use App\Http\Controllers\Controller;
use Dingo\Api\Routing\Helpers;
use Illuminate\Contracts\Validation\Validator;
use DB;

class BaseController extends Controller
{
    use Helpers;

    /****
     * BaseController constructor.
     */
    public function __construct()
    {

    }

    public function returnMsg($code='200', $message='ok', $data=''){
        $arr['code'] = $code;
        $arr['message'] = $message;
        $arr['data'] = $data;
        return $arr;
    }
    public function DateDiff($date1, $date2) 
	{ //时间比较函数，返回两个日期相差几分钟
            $dividend = 60; 
    	    $time1 = strtotime($date1);
    	    $time2 = strtotime($date2);
            if ($time1 && $time2)
       	 	  return (float)($time1-$time2)/$dividend;
    		  return false;
		} 
	/** 
*  @desc 根据两点间的经纬度计算距离                                                                       
*  @param float $lat 纬度值                                                                               
*  @param float $lng 经度值 
*/                                                                                                        
 public function getDistance($lat1, $lng1, $lat2, $lng2)  
 {                                                                                                        
     $earthRadius = 6367000; //approximate radius of earth in meters                                      
   
     /* 
       Convert these degrees to radians                                                                   
       to work with the formula                                                                           
     */  
     
     $lat1 = ($lat1 * pi() ) / 180;                                                                       
     $lng1 = ($lng1 * pi() ) / 180;                                                                       
     
     $lat2 = ($lat2 * pi() ) / 180;                                                                       
     $lng2 = ($lng2 * pi() ) / 180;                                                                       
   
     /* 
       Using the                                                                                          
       Haversine formula 
                                                                                                          
       http://en.wikipedia.org/wiki/Haversine_formula                                                     
  
       calculate the distance                                                                             
     */  
     
     $calcLongitude = $lng2 - $lng1;  
     $calcLatitude = $lat2 - $lat1;                                                                       
     $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);                    
     $stepTwo = 2 * asin(min(1, sqrt($stepOne)));                                                         
     $calculatedDistance = $earthRadius * $stepTwo;                                                       
     
     return round($calculatedDistance);                                                                   
 }
 
     /** 
     *@function to get the driver through phoneNumber
     *
     *@todo get the driver from the database's table
     */
    public function getDriverInfo($driverPhone){

        $driver = DB::table('drivers')
            ->where('driverPhone', $driverPhone)
            ->select('head', 'name', 'stars', 'driverPhone','orderFinishedNum','idNum','license','motoNum','motoType','guarantee')->first();
        //$driver->driverPosition = Redis::hGetAll('startcar:'.$driverPhone)['driverPosition'];
        if(!empty($driver->idNum))
			$driver->idNum = substr_replace($driver->idNum,'******',12,6);
        if(!empty($driver->license))
			$driver->license = substr_replace($driver->license,'******',12,6);
        return $driver;
    }                                                                                                        
}
